 /**********************************************************************
 * Fichier : MyDriver.h
 *
 * Résumé : Fichier d'en-tête qui définit les variables globales et les
 *          fonctions usager du pilote.
 *
 * Auteur : Vincent Léger
 *
 * Dernière modification : Lundi 5 novembre 2012
 *
 **********************************************************************/

#ifndef _MYDRIVER_H_
#define _MYDRIVER_H_

 /******************************************
 *********DÉCLARATION DE LIBRAIRIES*********
 ******************************************/
#include "DriverCore.h"         //fonctions "coeur" du pilote et structures personnelles
#include "MyIOCTL.h"            //définition des fonctions IOCTL
//Ces autres fichiers sont inclus par dépendance :
//#include "KernelLibz.h"         //librairies du kernel linux
//#include "DebugMacros.h"        //macros pour debogage
//#include "DriverDefinitions.h"  //définition des


 /******************************************
 ************VARIABLES GLOBALES*************
 ******************************************/
int driverMajor;                //numéro "major"
int driverMinor;                //numéro "mineur"
int nbDevices;                  //nombre d'instances actives
struct class *DriverClass;      //pointeur vers la classe du pilote
struct device *DriverDevice;    //pointeur vers le "device" (l'unite) du pilote
struct BufferStruct CoreBuffer; //tampon du pilote
struct DriverDev MyDevice;         //structure "dev" personnelle

 /******************************************
 *********DÉCLARATION DE FONCTIONS**********
 ******************************************/
//fonctions usager
static int driverInit(void);
static void driverExit(void);
int driverOpen(struct inode *inode, struct file *flip);
int driverRelease(struct inode *inode, struct file *flip);
ssize_t driverRead(struct file *flip, char __user *ubuf,
                    size_t count, loff_t *f_ops);
ssize_t driverWrite(struct file *flip, const char __user *ubuf,
                    size_t count, loff_t *f_ops);
long driverIoctl(struct file *filp, unsigned int cmd, unsigned long arg);


 /******************************************
 *****DÉCLARATION DES OPERATIONS USAGER*****
 ******************************************/
//structure "file operation"
struct file_operations Buf_fops = {
    .owner          =   THIS_MODULE,
    .open           =   driverOpen,
    .release        =   driverRelease,
    .read           =   driverRead,
    .write          =   driverWrite,
    .unlocked_ioctl =   driverIoctl,
};

//installation/désinstallation du module
module_init(driverInit);
module_exit(driverExit);

#endif  //_MYDRIVER_H_

